#ifndef __SALES_DATA_H__
#define __SALES_DATA_H__

#include <iostream>
#include <istream>
#include <string>
struct Sales_data {
    // 构造函数
    Sales_data() = default;
    Sales_data(const std::string &s): bookNo(s) {}
    Sales_data(const std::string &s, unsigned n, double p):
        bookNo(s), units_sold(n), revenue(p*n) {}
    explicit Sales_data(std::istream &);

    // 定义在声明内部，默认是 inline 的
    std::string isbn() const { return bookNo; }
    Sales_data& combine(const Sales_data&);
    double avg_price() const;

    std::string bookNo;             // 使用默认初始化
    unsigned int units_sold = 0;    // 类内初始化
    double revenue = 0.0;           // 类内初始化
};

// 非成员接口函数
Sales_data add(const Sales_data&, const Sales_data&);
std::ostream& print(std::ostream&, const Sales_data&);
std::istream& read(std::istream&, Sales_data&);

#endif // __SALES_DATA_H__